package com.wang.wx.config;

import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;

/**
 * 布隆过滤器相关配置
 */
@Component
public class BloomFilterConfig {
    
    /**
     * 布隆过滤器长度
     */
    @Value("${bloom.expectedInsertions:50000000}")
    private long expectedInsertions;

    /**
     * 误判率，默认：0.05
     */
    @Value("${bloom.falseProbability:0.05d}")
    private double falseProbability;

//    @Bean //谷歌的布隆过滤器是在jvm内存的，不放到spring容器了，因为它单例的，不会清空里面的数据也没有清空的方法
    public BloomFilter<String> createBloomFilter() {
        // 创建BloomFilter实例
        return BloomFilter.create(Funnels.stringFunnel(StandardCharsets.UTF_8), expectedInsertions, falseProbability);
    }
}